Speaker identification and unsupervised speaker adaptation techniques

ABSTRACT

Systems and processes for generating a speaker profile for use in performing speaker identification for a virtual assistant are provided. One example process can include receiving an audio input including user speech and determining whether a speaker of the user speech is a predetermined user based on a speaker profile for the predetermined user. In response to determining that the speaker of the user speech is the predetermined user, the user speech can be added to the speaker profile and operation of the virtual assistant can be triggered. In response to determining that the speaker of the user speech is not the predetermined user, the user speech can be added to an alternate speaker profile and operation of the virtual assistant may not be triggered. In some examples, contextual information can be used to verify results produced by the speaker identification process.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of U.S. patent application Ser. No.14/835,169, filed Aug. 25, 2015, entitled SPEAKER IDENTIFICATION ANDUNSUPERVISED SPEAKER ADAPTATION TECHNIQUES, which claims priority fromU.S. Provisional Ser. No. 62/057,990, filed on Sep. 30, 2014, entitledSPEAKER IDENTIFICATION AND UNSUPERVISED SPEAKER ADAPTATION TECHNIQUES,which is hereby incorporated by reference in its entirety for allpurposes.

FIELD

This relates generally to natural language processing and, morespecifically, to performing speaker identification for natural languageprocessing.

BACKGROUND

Intelligent automated assistants (or virtual assistants) provide anintuitive interface between users and electronic devices. Theseassistants can allow users to interact with devices or systems usingnatural language in spoken and/or text forms. For example, a user canaccess the services of an electronic device by providing a spoken userinput in natural language form to a virtual assistant associated withthe electronic device. The virtual assistant can perform naturallanguage processing on the spoken user input to infer the user's intentand operationalize the user's intent into tasks. The tasks can then beperformed by executing one or more functions of the electronic device,and a relevant output can be returned to the user in natural languageform.

Some natural language processing systems can perform speakeridentification to verify the identity of a user. These systems typicallyrequire the user to perform an enrollment process during which the userspeaks a series of predetermined words or phrases to allow the naturallanguage processing system to model the user's voice. While this processcan be used to effectively model the user's voice, it can produceunreliable results if the user speaks in an unnatural manner during theenrollment process and/or if the user performs the enrollment process inan acoustic environment that is different than those in which thespeaker identification is later performed. Thus, improved processes formodeling a user's voice are desired.

SUMMARY

Systems and processes for generating a speaker profile for use inperforming speaker identification for a virtual assistant are provided.One example process can include receiving an audio input including userspeech and determining whether a speaker of the user speech is apredetermined user based on a speaker profile for the predetermineduser. In response to determining that the speaker of the user speech isthe predetermined user, the user speech can be added to the speakerprofile and operation of the virtual assistant can be triggered. Inresponse to determining that the speaker of the user speech is not thepredetermined user, the user speech can be added to an alternate speakerprofile and operation of the virtual assistant may not be triggered. Insome examples, contextual information can be used to verify resultsproduced by the speaker identification process.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an exemplary environment in which a virtual assistantcan operate according to various examples.

FIG. 2 illustrates an exemplary user device according to variousexamples.

FIG. 3 illustrates an exemplary process for operating a virtualassistant according to various examples.

FIG. 4 illustrates an exemplary process for operating a virtualassistant in a speaker profile generating mode according to variousexamples.

FIG. 5 illustrates an exemplary process for operating a virtualassistant in a speaker profile modifying mode according to variousexamples.

FIG. 6 illustrates an exemplary process for operating a virtualassistant in a static speaker profile mode according to variousexamples.

FIG. 7 illustrates an exemplary process for performing speakeridentification according to various examples.

FIG. 8 illustrates a functional block diagram of an electronic deviceconfigured to generate a speaker profile based on a spoken user inputaccording to various examples.

DETAILED DESCRIPTION

In the following description of examples, reference is made to theaccompanying drawings in which it is shown by way of illustrationspecific examples that can be practiced. It is to be understood thatother examples can be used and structural changes can be made withoutdeparting from the scope of the various examples.

This relates to generating a speaker profile for use in performingspeaker identification for a virtual assistant. One example process caninclude receiving an audio input including user speech and determiningwhether a speaker of the user speech is a predetermined user based on aspeaker profile for the predetermined user. In response to determiningthat the speaker of the user speech is the predetermined user, the userspeech can be added to the speaker profile and operation of the virtualassistant can be triggered. In response to determining that the speakerof the user speech is not the predetermined user, the user speech can beadded to an alternate speaker profile and operation of the virtualassistant may not be triggered. In some examples, contextual informationcan be used to verify results produced by the speaker identificationprocess.

System Overview

FIG. 1 illustrates exemplary system 100 for implementing a virtualassistant according to various examples. The terms “virtual assistant,”“digital assistant,” “intelligent automated assistant,” or “automaticdigital assistant” can refer to any information processing system thatinterprets natural language input in spoken and/or textual form to inferuser intent, and performs actions based on the inferred user intent. Forexample, to act on an inferred user intent, the system can perform oneor more of the following: identifying a task flow with steps andparameters designed to accomplish the inferred user intent; inputtingspecific requirements from the inferred user intent into the task flow;executing the task flow by invoking programs, methods, services, APIs,or the like; and generating output responses to the user in an audible(e.g., speech) and/or visual form.

A virtual assistant can be capable of accepting a user request at leastpartially in the form of a natural language command, request, statement,narrative, and/or inquiry. Typically, the user request seeks either aninformational answer or performance of a task by the virtual assistant.A satisfactory response to the user request can include provision of therequested informational answer, performance of the requested task, or acombination of the two. For example, a user can ask the virtualassistant a question, such as “Where am I right now?” Based on theuser's current location, the virtual assistant can answer, “You are inCentral Park.” The user can also request the performance of a task, forexample, “Please remind me to call Mom at 4 p.m. today.” In response,the virtual assistant can acknowledge the request and then create anappropriate reminder item in the user's electronic schedule. During theperformance of a requested task, the virtual assistant can sometimesinteract with the user in a continuous dialogue involving multipleexchanges of information over an extended period of time. There arenumerous other ways of interacting with a virtual assistant to requestinformation or performance of various tasks. In addition to providingverbal responses and taking programmed actions, the virtual assistantcan also provide responses in other visual or audio forms (e.g., astext, alerts, music, videos, animations, etc.).

An example of a virtual assistant is described in Applicants' U.S.Utility application Ser. No. 12/987,982 for “Intelligent AutomatedAssistant,” filed Jan. 10, 2011, the entire disclosure of which isincorporated herein by reference.

As shown in FIG. 1, in some examples, a virtual assistant can beimplemented according to a client-server model. The virtual assistantcan include a client-side portion executed on a user device 102, and aserver-side portion executed on a server system 110. User device 102 caninclude any electronic device, such as a mobile phone, tablet computer,portable media player, desktop computer, laptop computer, PDA,television, television set-top box, wearable electronic device, or thelike, and can communicate with server system 110 through one or morenetworks 108, which can include the Internet, an intranet, or any otherwired or wireless public or private network. The client-side portionexecuted on user device 102 can provide client-side functionalities,such as user-facing input and output processing and communications withserver system 110. Server system 110 can provide server-sidefunctionalities for any number of clients residing on a respective userdevice 102.

Server system 110 can include one or more virtual assistant servers 114that can include a client-facing I/O interface 122, one or moreprocessing modules 118, data and model storage 120, and an I/O interfaceto external services 116. The client-facing I/O interface 122 canfacilitate the client-facing input and output processing for virtualassistant server 114. The one or more processing modules 118 can utilizedata and model storage 120 to determine the user's intent based onnatural language input, and perform task execution based on inferreduser intent. In some examples, virtual assistant server 114 cancommunicate with external services 124, such as telephony services,calendar services, information services, messaging services, navigationservices, and the like, through network(s) 108 for task completion orinformation acquisition. The I/O interface to external services 116 canfacilitate such communications.

Server system 110 can be implemented on one or more standalone dataprocessing devices or a distributed network of computers. In someexamples, server system 110 can employ various virtual devices and/orservices of third party service providers (e.g., third-party cloudservice providers) to provide the underlying computing resources and/orinfrastructure resources of server system 110.

Although the functionality of the virtual assistant is shown in FIG. 1as including both a client-side portion and a server-side portion, insome examples, the functions of the assistant can be implemented as astandalone application installed on a user device. In addition, thedivision of functionalities between the client and server portions ofthe virtual assistant can vary in different examples. For instance, insome examples, the client executed on user device 102 can be athin-client that provides only user-facing input and output processingfunctions, and delegates all other functionalities of the virtualassistant to a backend server.

User Device

FIG. 2 is a block diagram of a user-device 102 according to variousexamples. As shown, user device 102 can include a memory interface 202,one or more processors 204, and a peripherals interface 206. The variouscomponents in user device 102 can be coupled together by one or morecommunication buses or signal lines. User device 102 can further includevarious sensors, subsystems, and peripheral devices that are coupled tothe peripherals interface 206. The sensors, subsystems, and peripheraldevices gather information and/or facilitate various functionalities ofuser device 102.

For example, user device 102 can include a motion sensor 210, a lightsensor 212, and a proximity sensor 214 coupled to peripherals interface206 to facilitate orientation, light, and proximity sensing functions.One or more other sensors 216, such as a positioning system (e.g., a GPSreceiver), a temperature sensor, a biometric sensor, a gyroscope, acompass, an accelerometer, and the like, are also connected toperipherals interface 206, to facilitate related functionalities.

In some examples, a camera subsystem 220 and an optical sensor 222 canbe utilized to facilitate camera functions, such as taking photographsand recording video clips. Communication functions can be facilitatedthrough one or more wired and/or wireless communication subsystems 224,which can include various communication ports, radio frequency receiversand transmitters, and/or optical (e.g., infrared) receivers andtransmitters. An audio subsystem 226 can be coupled to speakers 228 anda microphone 230 to facilitate voice-enabled functions, such as voicerecognition, voice replication, digital recording, and telephonyfunctions.

In some examples, user device 102 can further include an I/O subsystem240 coupled to peripherals interface 206. I/O subsystem 240 can includea touch screen controller 242 and/or other input controller(s) 244.Touch-screen controller 242 can be coupled to a touch screen 246. Touchscreen 246 and the touch screen controller 242 can, for example, detectcontact and movement or break thereof using any of a plurality of touchsensitivity technologies, such as capacitive, resistive, infrared, andsurface acoustic wave technologies, proximity sensor arrays, and thelike. Other input controller(s) 244 can be coupled to otherinput/control devices 248, such as one or more buttons, rocker switches,a thumb-wheel, an infrared port, a USB port, and/or a pointer devicesuch as a stylus.

In some examples, user device 102 can further include a memory interface202 coupled to memory 250. Memory 250 can include any electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, a portable computer diskette (magnetic), a randomaccess memory (RAM) (magnetic), a read-only memory (ROM) (magnetic), anerasable programmable read-only memory (EPROM) (magnetic), a portableoptical disc such as CD, CD-R, CD-RW, DVD, DVD-R, or DVD-RW, or flashmemory such as compact flash cards, secured digital cards, USB memorydevices, memory sticks, and the like. In some examples, a non-transitorycomputer-readable storage medium of memory 250 can be used to storeinstructions (e.g., for performing some or all of process 300, 400, 500,600, or 700, described below) for use by or in connection with aninstruction execution system, apparatus, or device, such as acomputer-based system, processor-containing system, or other system thatcan fetch the instructions from the instruction execution system,apparatus, or device, and execute the instructions. In other examples,the instructions (e.g., for performing process 300, 400, 500, 600, or700, described below) can be stored on a non-transitorycomputer-readable storage medium of server system 110, or can be dividedbetween the non-transitory computer-readable storage medium of memory250 and the non-transitory computer-readable storage medium of serversystem 110. In the context of this document, a “non-transitory computerreadable storage medium” can be any medium that can contain or store theprogram for use by or in connection with the instruction executionsystem, apparatus, or device.

In some examples, the memory 250 can store an operating system 252, acommunication module 254, a graphical user interface module 256, asensor processing module 258, a phone module 260, and applications 262.Operating system 252 can include instructions for handling basic systemservices and for performing hardware dependent tasks. Communicationmodule 254 can facilitate communicating with one or more additionaldevices, one or more computers, and/or one or more servers. Graphicaluser interface module 256 can facilitate graphic user interfaceprocessing. Sensor processing module 258 can facilitate sensor relatedprocessing and functions. Phone module 260 can facilitate phone-relatedprocesses and functions. Application module 262 can facilitate variousfunctionalities of user applications, such as electronic-messaging, webbrowsing, media processing, navigation, imaging, and/or other processesand functions.

As described herein, memory 250 can also store client-side virtualassistant instructions (e.g., in a virtual assistant client module 264)and various user data 266 (e.g., user-specific vocabulary data,preference data, and/or other data, such as the user's electronicaddress book, to-do lists, shopping lists, etc.) to provide theclient-side functionalities of the virtual assistant.

In various examples, virtual assistant client module 264 can be capableof accepting voice input (e.g., speech input), text input, touch input,and/or gestural input through various user interfaces (e.g., I/Osubsystem 240, audio subsystem 226, or the like) of user device 102.Virtual assistant client module 264 can also be capable of providingoutput in audio (e.g., speech output), visual, and/or tactile forms. Forexample, output can be provided as voice, sound, alerts, text messages,menus, graphics, videos, animations, vibrations, and/or combinations oftwo or more of the above. During operation, virtual assistant clientmodule 264 can communicate with the virtual assistant server usingcommunication subsystem 224.

In some examples, virtual assistant client module 264 can utilize thevarious sensors, subsystems, and peripheral devices to gather additionalinformation from the surrounding environment of user device 102 toestablish a context associated with a user, the current userinteraction, and/or the current user input. In some examples, virtualassistant client module 264 can provide the contextual information or asubset thereof with the user input to the virtual assistant server tohelp infer the user's intent. The virtual assistant can also use thecontextual information to determine how to prepare and deliver outputsto the user.

In some examples, the contextual information that accompanies the userinput can include sensor information, such as lighting, ambient noise,ambient temperature, images or videos of the surrounding environment,distance to another object, and the like. The contextual information canfurther include information associated with the physical state of userdevice 102 (e.g., device orientation, device location, devicetemperature, power level, speed, acceleration, motion patterns, cellularsignal strength, etc.) or the software state of user device 102 (e.g.,running processes, installed programs, past and present networkactivities, background services, error logs, resources usage, etc.). Anyof these types of contextual information can be provided to the virtualassistant server 114 as contextual information associated with a userinput.

In some examples, virtual assistant client module 264 can selectivelyprovide information (e.g., user data 266) stored on user device 102 inresponse to requests from the virtual assistant server 114. Virtualassistant client module 264 can also elicit additional input from theuser via a natural language dialogue or other user interfaces uponrequest by virtual assistant server 114. Virtual assistant client module264 can pass the additional input to virtual assistant server 114 tohelp virtual assistant server 114 in intent inference and/or fulfillmentof the user's intent expressed in the user request.

In various examples, memory 250 can include additional instructions orfewer instructions. Furthermore, various functions of user device 102can be implemented in hardware and/or in firmware, including in one ormore signal processing and/or application specific integrated circuits.

Speaker Identification

FIG. 3 illustrates an exemplary process 300 for operating a virtualassistant using speaker identification according to various examples. Insome examples, process 300 can be performed by a system similar oridentical to system 100 having a user device similar or identical touser device 102 configured to implement a virtual assistant capable ofcontinuously (or intermittently over an extended period of time)monitoring an audio input for a receipt of a trigger phrase thatinitiates activation of the virtual assistant. For example, a userdevice implementing the virtual assistant can continuously orintermittently monitor sounds, speech, and the like detected by amicrophone of the user device without performing an action, such asperforming a task flow, generating an output response in an audible(e.g., speech) and/or visual form, or the like, in response to themonitored sounds and speech. However, in response to detecting thetrigger phrase, the virtual assistant can perform a speakeridentification process to ensure that the speaker of the trigger phraseis the intended operator of the virtual assistant. Upon verification ofthe identity of the speaker, the virtual assistant can be activated,causing the virtual assistant to process a subsequently received word orphrase and to respond accordingly. A more detailed description ofprocess 300 is provided below.

At block 302 of process 300, an audio input including user speech can bereceived at a user device. In some examples, a user device (e.g., userdevice 102) can receive the audio input including user speech via amicrophone (e.g., microphone 230). The microphone can convert the audioinput into an analog or digital representation, and provide audio datarepresenting the audio input to one or more processors (e.g.,processor(s) 204) of the user device.

At block 304, speech-to-text conversion can be performed on the audioinput received at block 302 to determine whether the audio inputincludes user speech containing a predetermined trigger phrase. Thetrigger phrase can include any desired set of one or more predeterminedwords, such as “Hey Siri.” The trigger phrase can be used to activatethe virtual assistant and signal to the virtual assistant that a userinput, such as a request, command, or the like, will be subsequentlyprovided. For example, a user may utter the trigger phrase “Hey Siri,”followed by the command “Call Mom,” to activate the virtual assistantand request that the virtual assistant initiate a phone call to thephone number associated with “Mom” in the user's contact list. In someexamples, the speech-to-text conversion performed at block 304 can beperformed locally on the user device (e.g., user device 102). In otherexamples, the speech-to-text conversion can be performed at a remotesever (e.g., server system 110). In these examples, the user device cantransmit the audio input received at block 302 to the remote serverthrough one or more networks (e.g., network 108). The remote server canperform the speech-to-text conversion on the audio input and return atextual representation of the audio input to the user device. If it isdetermined at block 304 that the audio input does not include thetrigger phrase, process 300 can return to block 302. Blocks 302 and 304can be repeatedly performed at any desired interval of time to monitorthe audio input for the trigger phrase. If it is instead determined atblock 304 that the audio input received at block 302 includes thetrigger phrase, process 300 can proceed to block 305.

At block 305, the user device can generate a speaker profile,selectively perform speaker recognition using the speaker profile, andselectively activate the virtual assistant in response to positivelyidentifying the speaker using speaker recognition. In some examples, thespeaker profile can generally include one or more voice prints generatedfrom an audio recording of a speaker's voice. The voice prints can begenerated using any desired speech recognition technique, such as bygenerating i-vectors to represent speaker utterances. Speakerrecognition can be performed using the voice prints of a speaker profileby comparing an audio input containing user speech with the voice printsin the speaker profile. As discussed in greater detail below, block 305can include blocks 306, 308, 310, and 312 for allowing the user deviceto operate in multiple modes of operation based on a status of thespeaker profile.

Specifically, at block 306, the user device can select one of multiplemodes in which to operate. In some examples, the multiple modes caninclude a speaker profile building mode (represented by block 308) inwhich a speaker's voice can be modeled to generate a speaker profile, aspeaker profile modifying mode (represented by block 310) in which aspeaker profile can be used to verify the identity of a user and inwhich the speaker profile can be updated based on newly received userspeech, and a static speaker profile mode in which an existing speakerprofile can be used to verify the identity of a user and in which thespeaker profile may not be changed based on newly received user speech.A more detailed description of each of these modes is provided belowwith respect to FIGS. 4-7.

In some examples, the speaker profile building mode (represented byblock 308) can be selected at block 306 if a speaker profile for auser's voice does not exist or if the speaker profile includes less thana lower threshold number of voice prints (e.g., 1, 5, 10, or othernumber of voice prints). In some examples, the speaker profile modifyingmode (represented by block 310) can be selected at block 306 if thespeaker profile for the user's voice includes a number of voice printsbetween the lower threshold number of voice prints and an upperthreshold number of voice prints (e.g., 15, 20, 25, 30, or other numberof voice prints). In some examples, the static speaker profile mode(represented by block 312) can be selected at block 306 if the speakerprofile for the user's voice includes more than the upper thresholdnumber of voice prints.

If it is determined at block 306 that the appropriate mode of operationis the speaker profile building mode (e.g., because no speaker profileexists or because the speaker profile includes an insufficient number ofvoice prints), process 300 can proceed to block 308 where the virtualassistant can operate in the speaker profile building mode. FIG. 4illustrates an exemplary process 400 for operating the virtual assistantin this mode.

At block 402, the user device can add the audio input that was receivedat block 302 and determined to include the trigger phrase at block 304to an existing speaker profile (if such a profile exists), or can beused create a new speaker profile (if no speaker profile currentlyexists). Adding the audio input to the speaker profile can generallyinclude generating a voice print from the audio input (e.g., bygenerating an i-vector representation of the audio input) and storingthe voice print in association with the speaker profile. In someexamples, the stored voice print can be annotated with contextual data,such as a location where the audio input used to generate the voiceprint was received (e.g., based on location data generated by the userdevice), a time that the audio input used to generate the voice printwas received, or the like.

At block 404, the user device can activate the virtual assistant byprocessing audio input received subsequent to the audio input containingthe trigger phrase. For example, block 404 can include receiving thesubsequent audio input, performing speech-to-text conversion on thesubsequently received audio input to generate a textual representationof user speech contained in the subsequently received audio input,determining a user intent based on the textual representation, an actingon the determined user intent by performing one or more of thefollowing: identifying a task flow with steps and parameters designed toaccomplish the determined user intent; inputting specific requirementsfrom the determined user intent into the task flow; executing the taskflow by invoking programs, methods, services, APIs, or the like; andgenerating output responses to the user in an audible (e.g., speech)and/or visual form.

After completing block 404, process 400 can end and the operation of theuser device can return to block 302 of process 300. Blocks 302 and 304can then be repeatedly performed until detecting another occurrence ofthe trigger phrase in the audio input. In response, block 306 can againbe performed to determine the appropriate mode in which to operate. Insome examples, the profile building mode represented by block 308 andprocess 400 can continue to be selected until a sufficient number ofvoice prints are generated for the speaker profile. As mentioned above,this can be 1, 5, 10, or any other desired number of voice prints. Thus,blocks 302, 304, 306, and 308 (e.g., process 400) can repeatedly beperformed until the speaker profile includes this number of voiceprints.

Using process 400, the virtual assistant can advantageously useutterances of the trigger phrase received at block 302 to build aspeaker profile without forcing the user to perform a separateenrollment process. Instead, the virtual assistant can use speech fromthe user's natural interaction with the virtual assistant to generatethis speaker profile. This can result in a speaker profile that moreaccurately represents the user's voice. Additionally, while usingprocess 400 in the speaker profile building mode, the virtual assistantcan process subsequently received audio input at block 404 withoutpreviously performing speaker identification on the user's utterance ofthe trigger phrase. This can be done because either a speaker profiledoes not exist or because an existing speaker profile contains aninsufficient number of voice prints to reliably identify the speaker.

Once the speaker profile generated using process 400 includes thedesired number of voice prints, receipt of an audio input containing thetrigger phrase at block 302 can cause the user device to determine atblock 306 that the appropriate mode of operation is the speaker profilemodifying mode represented by block 310. As mentioned above, in someexamples, the speaker profile modifying mode can be selected if thespeaker profile for the user includes a number of voice prints between alower threshold number of voice prints (e.g., 1, 5, 10, or other numberof voice prints) and an upper threshold number of voice prints (e.g.,15, 20, 25, 30, or other number of voice prints). FIG. 5 illustrates anexemplary process 500 for operating the virtual assistant in this mode.

At block 502, the user device can perform a speaker identificationprocess on the audio input received at block 302 of process 300 todetermine whether the speaker is a predetermined user (e.g., anauthorized user of the device). Any desired speaker identificationprocess can be used, such as an i-vector speaker identification process.In some examples, block 502 can include comparing the audio inputreceived at block 302 with some or all of the voice prints of thespeaker profile generated using process 400. For instance, in someexamples, block 502 can include determining whether the audio inputreceived at block 302 matches (e.g., matches within an acceptedtolerance) each of the voice prints of the speaker profile. If it isdetermined that the audio input matches a threshold number of the voiceprints of the speaker profile, it can be determined that the speaker ofthe utterance contained in the audio input is the user represented bythe speaker profile. The threshold number of matching voice prints canbe any desired number, such as 1 voice print, 50% of the voice prints,75% of the voice prints, all of the voice prints, or any other numberdepending on the desired confidence that the speaker is actually theuser represented by the speaker profile. In some examples, the thresholdnumber of matching voice prints can depend on the number of voice printscontained in the speaker profile. For example, if the speaker profileincludes a large number of voice prints, block 502 can require a largerthreshold number or percentage to require a closer match to the speakerprofile. Conversely, if the speaker profile includes a small number ofvoice prints, block 502 can require a lower threshold number orpercentage to require less stringent matching to the speaker profile

In other examples where the voice prints are annotated with contextualinformation, block 502 can include comparing the audio input received atblock 302 with a subset of the voice prints of the speaker profile thatmatch contextual information associated with the audio input. Forexample, if the audio input received at block 302 was received at alocation corresponding to the user's office, block 502 can includedetermining whether the audio input received at block 302 matches thevoice prints generated from audio data received at a locationcorresponding to the user's office, but can exclude determining whetherthe audio input received at block 302 matches the voice prints generatedfrom audio data received at a location corresponding to the user's homeor in the user's vehicle. Comparing the audio input to the speakerprofile in this way can advantageously result in greater speakeridentification accuracy since the conditions in which the audio inputand the audio input used to generate the voice prints are more closelyrelated.

In yet other examples, the user device can include a speaker profile formore than one user. In these examples, block 502 can include comparingthe audio input received at block 302 with some or all of the voiceprints of some or all of the speaker profiles. The determined identityof the speaker can be the user associated with the speaker profile thatmost closely matches the audio input.

Using any of the speaker identification processes described above, if itis determined at block 502 that the speaker of the audio input is thepredetermined user represented by the speaker profile, process 500 canproceed to block 504.

At block 504, the audio input can be added to the speaker profile in amanner similar or identical to block 402 of process 400. In someexamples, the audio input can be added to the speaker profile toincrease the total number of voice prints contained in the speakerprofile. In other examples, the speaker profile can include a maximumnumber of voice prints and block 504 can include adding the mostrecently received audio input to the speaker profile and removing thevoice print associated with the oldest received audio input from thespeaker profile. At block 506, the virtual assistant can be activatedand subsequently received audio input can be processed in a mannersimilar or identical to block 404 of process 400. After completing block506, the user device can return to block 302 of process 300.

Referring back to block 502 of process 500, if it is instead determinedthat the speaker of the audio input is not the predetermined userrepresented by the speaker profile, process 500 can proceed from block502 to block 508. At block 508, the user device can add the audio inputthat was received at block 302 of process 300 and determined to not bemade by the predetermined user represented by the speaker profile to analternate speaker profile (if such a profile exists), or can be usedcreate a new alternate speaker profile (if no alternate speaker profilecurrently exists). The alternate speaker profile can represent the voiceof one or more users that are different than the predetermined userrepresented by the speaker profile. Similar to adding the audio input tothe speaker profile at block 402 or 504, adding the audio input to thealternate speaker profile can include generating a voice print from theaudio input (e.g., by generating an i-vector representation of the audioinput) and storing the voice print in association with the alternatespeaker profile. In some examples, the stored voice print can beannotated with contextual data, such as a location where the audio inputused to generate the voice print was received (e.g., based on locationdata generated by the user device), a time that the audio input used togenerate the voice print was received, or the like.

In some examples, a single alternate speaker profile can be generated atblock 508. In these examples, all audio inputs determined to not bespoken by the predetermined user at block 502 can be added to thisalternate speaker profile at block 508. In other examples, separatealternate speaker profiles can be generated for each uniquely identifiedspeaker. For example, block 508 can include comparing the audio inputreceived at block 302 with all alternate speaker profiles to determineif the speaker of the audio input matches an existing speaker profile.If it is determined at block 508 that the speaker of the audio inputmatches one of the existing alternate speaker profiles, the audio inputcan be added to that alternate speaker profile. If it is insteaddetermined at block 508 that the speaker of the audio input does notmatch one of the existing alternate speaker profiles, a new alternatespeaker profile can be generated using the audio input.

In some examples, after one or more alternate speaker profiles aregenerated at block 508, subsequent performances of block 502 can includecomparing the audio input received at block 302 with the voice prints ofboth the speaker profile and alternate speaker profile(s). For example,it can be determined whether the audio input received at block 302matches (e.g., within an accepted tolerance) each of the voice prints ofthe speaker profile and each of the voice prints of the alternatespeaker profile(s). In some examples, if it is determined that the audioinput matches a greater number or percentage of voice prints from thespeaker profile than a number or percentage of voice prints from thealternate speaker profile(s), it can be determined that the speaker ofthe utterance contained in the audio input is the predetermined userrepresented by the speaker profile. If it is instead determined that theaudio input matches a greater number or percentage of voice prints fromthe alternate speaker profile(s) than a number or percentage of voiceprints from the speaker profile, it can be determined that the speakerof the utterance contained in the audio input is not the predetermineduser represented by the speaker profile.

After completing block 508, the user device can return to block 302 ofprocess 300 without activating the virtual assistant and withoutprocessing subsequently received audio inputs. Using process 500, thevirtual assistant can perform speaker identification using the speakerprofile generated using process 400 to verify that the speaker of thetrigger phrase is the authorized or intended user of the virtualassistant. This can advantageously be performed to prevent unauthorizedor unintended triggering of the virtual assistant. For example,performing of speaker identification can be useful in situations wherethe user device is located in a room with similar devices configured toactivate a virtual assistant in response to the same trigger phrase. Inthis situation, it can be undesirable for one user's virtual assistantto activate in response to an utterance of the trigger phrase by anotheruser. Additionally, process 500 can be used to modify or update thespeaker profile with newly received speech from the user's naturalinteraction with the virtual assistant to update the speaker profile.Updating the speaker profile can advantageously be performed to allowthe speaker profile to adapt to changes in the user's voice over timeand/or account for different conditions in which the user's speech isreceived.

After completing block 506 or 508, the operation of the user device canreturn to block 302 of process 300. Blocks 302 and 304 can repeatedly beperformed until detecting another occurrence of the trigger phrase inthe audio input. In response, block 306 can be performed to determinethe appropriate mode in which to operate. In some examples, the speakerprofile modifying mode represented by block 310 and process 500 cancontinue to be selected until a sufficient number of voice prints aregenerated for the speaker profile. As mentioned above, this can be 15,20, 25, 30, or any other desired number of voice prints. Thus, blocks302, 304, 306, and 310 can repeatedly be performed until the speakerprofile includes this number of voice prints.

Once the speaker profile includes the desired number of voice prints,receipt of an audio input containing the trigger phrase at block 302 cancause the user device to determine at block 306 that the appropriatemode of operation is the static speaker profile mode represented byblock 312. As mentioned above, in some examples, the static speakerprofile mode can be selected if the speaker profile for the user's voiceincludes a number of voice prints equal to or greater than an upperthreshold number of voice prints (e.g., 15, 20, 25, 30, or other desirednumber of voice prints). FIG. 6 illustrates an exemplary process 600 foroperating the virtual assistant in this mode.

At block 602, the user device can perform a speaker identificationprocess on the audio input received at block 302 of process 300 in amanner similar or identical to that of block 502 of process 500. If itis determined that the speaker of the audio input is the predetermineduser represented by the speaker profile, then process 600 can proceed toblock 604 without adding the audio input to a speaker profile in amanner similar or identical to block 402 of process 400 or block 504 ofprocess 500. At block 604, the virtual assistant can be activated andsubsequently received audio input can be processed in a manner similaror identical to block 404 of process 400 or block 506 of process 500. Ifit was instead determined at block 602 that the speaker of the audioinput was not the predetermined user represented by the speaker profile,process 600 can end without adding the audio input to a speaker profileand without processing subsequently received audio input. Instead, theoperation of the user device can return to block 302 of process 300.

Using process 600, the virtual assistant can perform speakeridentification using the speaker profile generated using process 400and/or 500 to verify that the speaker of the trigger phrase is theauthorized or intended user of the virtual assistant. This canadvantageously be performed to prevent unauthorized or unintendedtriggering of the virtual assistant. For example, performing of speakeridentification can be useful in situations where the user device islocated in a room with similar devices configured to activate a virtualassistant in response to the same trigger phrase. In this situation, itcan be undesirable for one user's virtual assistant to activate inresponse to an utterance of the trigger phrase by another user.Additionally, process 600 can forgo the adding of audio input to aspeaker profile. This can be performed in situations where the speakerprofile has a sufficient number of voice prints and additional voiceprints may not be necessary. This can advantageously reduce the amountof storage required to store the speaker profile(s) and reduce theprocessing power required to add voice prints to existing speakerprofile(s).

In some examples, the speaker identification performed at block 502and/or 602 can include determining whether the speaker identificationmade using the speaker profile and/or alternate speaker profile(s) waserroneous based on contextual information. FIG. 7 illustrates anexemplary process 700 for performing speaker identification usingcontextual information that can be performed at block 502 or 602. Atblock 702, a speaker identification process can be performed on theaudio input received at block 302 of process 300 in a manner similar oridentical to block 502 of process 500 or block 602 of process 600. If itis determined that the speaker of the audio input is the predetermineduser represented by the speaker profile, process 700 can proceed toblock 704.

At block 704, it can be determined based on contextual informationwhether the determination made at block 702 was likely erroneous. Insome examples, this can include determining whether a request to cancelan operation is received (e.g., via a verbal request from the user, viaa button or other input mechanism of the user device, or the like). Theoccurrence of the request to cancel can indicate that the determinationmade at block 702 was likely incorrect because the user is now cancelingthe operation that an utterance of the trigger phrase was intended toinitiate. This can occur, for example, in a situation where multipleusers are located in the same room and an utterance from one usertriggers activation of the virtual assistant on another user's device.In other examples, block 704 can include determining whether subsequentaudio input including user speech is not received within a thresholdlength of time. The threshold length of time can be any desired lengthof time, but, in some examples, can represent the amount of time duringwhich a user is likely to provide a request or command to the virtualassistant after speaking the trigger phrase. The absence of an audioinput including user speech within this threshold length of time canindicate that the determination made at block 702 was likely incorrectbecause the user is not providing the type of input expected afterutterance of a trigger phrase, suggesting that the user did not intendto trigger the virtual assistant. In other examples, other types ofcontextual information that can be indicative of the determination madeat block 702 being correct or incorrect can be used. If it is determinedat block 704 that the determination made at block 702 was not erroneous,process 700 can proceed to block 708 where a final determination thatthe speaker of the audio input is the predetermined user represented bythe speaker profile can be made. Alternatively, if it is insteaddetermined at block 704 that the determination made at block 702 waslikely erroneous, process 700 can proceed to block 710 where a finaldetermination that the speaker of the audio input is not thepredetermined user represented by the speaker profile can be made.

Referring back to block 702, if it is instead determined that thespeaker of the audio input is not the predetermined user represented bythe speaker profile, process 700 can proceed to block 706. At block 706,it can be determined based on contextual information whether thedetermination made at block 702 was likely erroneous. In some examples,this can include determining whether another audio input including thetrigger phrase is received within a threshold length of time. Thethreshold length of time can be any desired length of time. The receiptof another trigger phrase can indicate that the determination made atblock 702 was likely incorrect because the user is again attempting totrigger the virtual assistant. In other examples, block 706 can includedetermining whether another form of a request to trigger the virtualassistant (e.g., via a selection of a mechanical button or other inputmechanism) is received within a threshold length of time. The thresholdlength of time can be any desired length of time. The receipt of anothertrigger phrase can indicate that the determination made at block 702 waslikely incorrect because the user is continuing to attempt to triggerthe virtual assistant using means other than the trigger phrase. Inother examples, other types of contextual information that can beindicative of the determination made at block 702 being correct orincorrect can be used. If it is determined at block 706 that thedetermination made at block 702 was not erroneous, the process canproceed to block 710 where a final determination that the speaker of theaudio input is not the predetermined user represented by the speakerprofile can be made. Alternatively, if it is instead determined at block706 that the determination made at block 702 was likely erroneous,process 700 can proceed to block 708 where a final determination thatthe speaker of the audio input is the predetermined user represented bythe speaker profile can be made.

Processes 300, 400, 500, 600, and 700 can continue to be repeated anynumber of times in accordance with the description above to process userinputs and to generate/modify speaker profiles for performing speakeridentification. In some examples, the speaker profiles can be reset ordeleted in response to a request from the user, a request to change alanguage of the virtual assistant, or other input. In these examples,process 300 can again operate in the speaker profile generating mode(represented by block 308) and continue as described above.

While specific modes of operation and criteria for selecting each mode(e.g., at block 306) are described above, it should be appreciated thatany other criteria can be used depending on the desired operation of thevirtual assistant. Moreover, it should be appreciated that process 300can include alternate, additional, or fewer modes of operation. Forinstance, in some examples, process 300 can include only the speakerprofile modifying mode. In these examples, blocks 306, 308, and 312 canbe omitted. In other examples, process 300 can include the speakerprofile building mode and the speaker profile modifying mode, but canexclude the static speaker profile mode. In these examples, process 300can include block 306, 308, and 310, but can exclude block 312. Itshould be appreciated that other combinations of these and other modesare possible.

It should be appreciated that the blocks of processes 300, 400, 500,600, and 700 can be performed on user device 102, server system 110, ora combination of user device 102 and server system 110. For instance, insome examples, all blocks of processes 300, 400, 500, 600, and 700 canbe performed on user device 102. In other examples, some blocks ofprocesses 300, 400, 500, 600, and 700 can be performed at user device102, while other blocks of processes 300, 400, 500, 600, and 700 can beperformed at server system 110. In yet other examples, all blocks ofprocesses 300, 400, 500, 600, and 700 can be performed at server system110.

Electronic Device

In accordance with some examples, FIG. 8 shows a functional blockdiagram of an electronic device 800 configured in accordance with theprinciples of the various described examples. The functional blocks ofthe device can be implemented by hardware, software, or a combination ofhardware and software to carry out the principles of the variousdescribed examples. It is understood by persons of skill in the art thatthe functional blocks described in FIG. 8 can be combined or separatedinto sub-blocks to implement the principles of the various describedexamples. Therefore, the description herein optionally supports anypossible combination or separation or further definition of thefunctional blocks described herein.

As shown in FIG. 8, electronic device 800 can include a touch screendisplay unit 802 configured to display a user interface and to receivetouch input, and a sound receiving unit 804 configured to receive soundinput. In some examples, electronic device 800 can include a speakerunit 806 configured to generate sound. Electronic device 800 can furtherinclude a processing unit 808 coupled to touch screen display unit 802and sound receiving unit 804 (and, optionally, coupled to speaker unit806). In some examples, processing unit 808 can include receiving unit810, determining unit 812, adding unit 814, speech-to-text unit 816,intent determining unit 818, task determining unit 820, parameterdetermining unit 822, and task performing unit 824.

Processing unit 808 can be configured to receive (e.g., from audioreceiving unit 804) an audio input comprising user speech. Determiningunit 810 can be configured to determine whether a speaker of the userspeech is a predetermined user based at least in part on a speakerprofile for the predetermined user. Adding unit 812 can be configured toadd, in accordance with a determination that the speaker of the userspeech is the predetermined user, the audio input comprising user speechto the speaker profile for the predetermined user.

In some examples, the speaker profile for the predetermined usercomprises a plurality of voice prints.

In some examples, each of the plurality of voice prints of the speakerprofile for the predetermined user was generated from previouslyreceived audio inputs comprising user speech.

In some examples, determining whether the speaker of the user speech isthe predetermined user based at least in part on the speaker profile forthe predetermined user comprises: determining whether the audio inputcomprising user speech matches at least a threshold number of theplurality of voice prints; in accordance with a determination that theaudio input comprising user speech matches at least the threshold numberof the plurality of voice prints, determining that the speaker of theuser speech is the predetermined user; and in accordance with adetermination that the audio input comprising user speech does not matchat least the threshold number of the plurality of voice prints,determining that the speaker of the user speech is not the predetermineduser.

In some examples, determining whether the speaker of the user speech isthe predetermined user based at least in part on the speaker profile forthe predetermined user comprises: determining whether the audio inputcomprising user speech matches at least a threshold number of theplurality of voice prints; in accordance with a determination that theaudio input comprising user speech matches at least the threshold numberof the plurality of voice prints: determining whether an erroneousspeaker determination was made based on contextual data; in accordancewith a determination that an erroneous speaker determination was notmade based on contextual data, determining that the speaker of the userspeech is the predetermined user; and in accordance with a determinationthat an erroneous speaker determination was made based on contextualdata, determining that the speaker of the user speech is not thepredetermined user; and in accordance with a determination that theaudio input comprising user speech does not match at least the thresholdnumber of the plurality of voice prints: determining whether anerroneous speaker determination was made based on contextual data; inaccordance with a determination that an erroneous speaker determinationwas not made based on contextual data, determining that the speaker ofthe user speech is not the predetermined user; and in accordance with adetermination that an erroneous speaker determination was made based oncontextual data, determining that the speaker of the user speech is thepredetermined user.

In some examples, adding the audio input comprising user speech to thespeaker profile for the predetermined user comprises: generating a voiceprint from the audio input comprising user speech; and storing the voiceprint in association with the speaker profile for the predetermineduser.

In some examples, adding unit 814 can be further configured to add, inaccordance with a determination that the speaker of the user speech isnot the predetermined user, the audio input comprising user speech to aspeaker profile for an alternate user.

In some examples, the speaker profile for the alternate user comprises aplurality of voice prints.

In some examples, each of the plurality of voice prints of the speakerprofile for the alternate user was generated from previously receivedaudio inputs comprising user speech.

In some examples, determining whether the speaker of the user speech isthe predetermined user is further based at least in part on the speakerprofile for the alternate user.

In some examples, determining whether the speaker of the user speech isthe predetermined user comprises: determining whether the audio inputcomprising user speech matches a greater number of voice prints of thespeaker profile for the predetermined user than a number of voice printsof the speaker profile for the alternate user; in accordance with adetermination that the audio input comprising user speech matches agreater number of voice prints of the speaker profile for thepredetermined user than a number of voice prints of the speaker profilefor the alternate user, determining that the speaker of the user speechis the predetermined user; and in accordance with a determination thatthe audio input comprising user speech does not match a greater numberof voice prints of the speaker profile for the predetermined user than anumber of voice prints of the speaker profile for the alternate user,determining that the speaker of the user speech is not the predetermineduser.

In some examples, determining whether the speaker of the user speech isthe predetermined user comprises: determining whether the audio inputcomprising user speech matches a greater number of voice prints of thespeaker profile for the predetermined user than a number of voice printsof the speaker profile for the alternate user; in accordance with adetermination that the audio input comprising user speech matches agreater number of voice prints of the speaker profile for thepredetermined user than a number of voice prints of the speaker profilefor the alternate user: determining whether an erroneous speakerdetermination was made based on contextual data; in accordance with adetermination that an erroneous speaker determination was not made basedon contextual data, determining that the speaker of the user speech isthe predetermined user; and in accordance with a determination that anerroneous speaker determination was made based on contextual data,determining that the speaker of the user speech is not the predetermineduser; and in accordance with a determination that the audio inputcomprising user speech does not match a greater number of voice printsof the speaker profile for the predetermined user than a number of voiceprints of the speaker profile for the alternate user: determiningwhether an erroneous speaker determination was made based on contextualdata; in accordance with a determination that an erroneous speakerdetermination was not made based on contextual data, determining thatthe speaker of the user speech is not the predetermined user; and inaccordance with a determination that an erroneous speaker determinationwas made based on contextual data, determining that the speaker of theuser speech is the predetermined user.

In some examples, speech-to-text unit 816 can be configured to perform,in accordance with a determination that the speaker of the user speechis the predetermined user, speech-to-text conversion on a second audioinput comprising a second user speech, wherein the second audio input isreceived after receiving the audio input comprising user speech. Intentdetermining unit 818 can be configured to determine, in accordance witha determination that the speaker of the user speech is the predetermineduser, a user intent based on the second user speech. Task determiningunit 820 can be configured to determine, in accordance with adetermination that the speaker of the user speech is the predetermineduser, a task to be performed based on the second user speech. Taskperforming unit 824 can be configured to perform, in accordance with adetermination that the speaker of the user speech is the predetermineduser, the task to be performed in accordance with the determinedparameter.

As described above, one aspect of the present technology is thegathering and use of data available from various sources to improve thedelivery to users of invitational content or any other content that maybe of interest to them. The present disclosure contemplates that in someinstances, this gathered data can include personal information data thatuniquely identifies or can be used to contact or locate a specificperson. Such personal information data can include demographic data,location-based data, telephone numbers, email addresses, home addresses,or any other identifying information.

The present disclosure recognizes that the use of such personalinformation data, in the present technology, can be used to the benefitof users. For example, the personal information data can be used todeliver targeted content that is of greater interest to the user.Accordingly, use of such personal information data enables calculatedcontrol of the delivered content. Further, other uses for personalinformation data that benefit the user are also contemplated by thepresent disclosure.

The present disclosure further contemplates that the entitiesresponsible for the collection, analysis, disclosure, transfer, storage,or other use of such personal information data will comply withwell-established privacy policies and/or privacy practices. Inparticular, such entities should implement and consistently use privacypolicies and practices that are generally recognized as meeting orexceeding industry or governmental requirements for maintaining personalinformation data private and secure. For example, personal informationfrom users should be collected for legitimate and reasonable uses of theentity and not shared or sold outside of those legitimate uses. Further,such collection should occur only after receiving the informed consentof the users. Additionally, such entities would take any needed stepsfor safeguarding and securing access to such personal information dataand ensuring that others with access to the personal information dataadhere to their privacy policies and procedures. Further, such entitiescan subject themselves to evaluation by third parties to certify theiradherence to widely accepted privacy policies and practices.

Despite the foregoing, the present disclosure also contemplates examplesin which users selectively block the use of, or access to, personalinformation data. That is, the present disclosure contemplates thathardware and/or software elements can be provided to prevent or blockaccess to such personal information data. For example, in the case ofadvertisement delivery services, the present technology can beconfigured to allow users to select to “opt in” or “opt out” ofparticipation in the collection of personal information data duringregistration for services. In another example, users can select not toprovide location information for targeted content delivery services. Inyet another example, users can select to not provide precise locationinformation, but permit the transfer of location zone information.

Therefore, although the present disclosure broadly covers use ofpersonal information data to implement one or more various disclosedexamples, the present disclosure also contemplates that the variousexamples can also be implemented without the need for accessing suchpersonal information data. That is, the various examples of the presenttechnology are not rendered inoperable due to the lack of all or aportion of such personal information data. For example, content can beselected and delivered to users by inferring preferences based onnon-personal information data or a bare minimum amount of personalinformation, such as the content being requested by the deviceassociated with a user, other non-personal information available to thecontent delivery services, or publicly available information.

Although examples have been fully described with reference to theaccompanying drawings, it is to be noted that various changes andmodifications will become apparent to those skilled in the art. Suchchanges and modifications are to be understood as being included withinthe scope of the various examples as defined by the appended claims.

What is claimed is:
 1. A non-transitory computer-readable storage mediumstoring one or more programs, the one or more programs comprisinginstructions for operating a virtual assistant, which when executed byone or more processors of an electronic device, cause the device to:receive current user speech for activating the virtual assistant,wherein the current user speech is associated with current contextualdata; select, based on the current contextual data, a first set ofstored voiceprints from a plurality of sets of stored voiceprints in aspeaker profile of the device, wherein the first set of storedvoiceprints is annotated to indicate first contextual data; determinewhether a current voiceprint derived from the current user speechmatches the first set of stored voiceprints within a predeterminedthreshold; and in accordance with a determination that the currentvoiceprint matches the first set of stored voiceprints within thepredetermined threshold: add the current voiceprint to the first set ofstored voiceprints in the speaker profile; annotate the currentvoiceprint to indicate the first contextual data; and activate thevirtual assistant to process a spoken command received subsequent to theuser speech.
 2. The non-transitory computer-readable storage medium ofclaim 1, wherein the speaker profile is associated with a user providingthe current user speech.
 3. The non-transitory computer-readable storagemedium of claim 1, wherein each voiceprint of the plurality of sets ofstored voiceprints of the speaker profile was generated from user speechreceived prior to receiving the current user speech.
 4. Thenon-transitory computer-readable storage medium of claim 1, wherein theinstructions, when executed by the one or more processors, further causethe device to: in accordance with a determination that the currentvoiceprint does not match the first set of stored voiceprints within thepredetermined threshold, add the current voiceprint to an alternatespeaker profile.
 5. The non-transitory computer-readable storage mediumof claim 1, wherein the instructions, when executed by the one or moreprocessors, further cause the device to: in accordance with adetermination that the current voiceprint does not match the first setof stored voiceprints within the predetermined threshold: determinewhether the current voiceprint derived from the current user speechmatches, within a second predetermined threshold, a second set of storedvoiceprints in a second speaker profile of the device; and in accordancewith a determination that the current voiceprint matches the second setof stored voiceprints within the second predetermined threshold, add thecurrent voiceprint to the second set of stored voiceprints in the secondspeaker profile.
 6. The non-transitory computer-readable storage mediumof claim 5, wherein the second speaker profile is associated with a userdifferent from the user associated with the speaker profile.
 7. Thenon-transitory computer-readable storage medium of claim 1, wherein theinstructions, when executed by the one or more processors, further causethe device to: in accordance with a determination that the currentvoiceprint matches the first set of stored voiceprints within thepredetermined threshold: perform speech-to-text conversion on the spokencommand; determine a user intent based on the spoken command; determinea task to be performed based on the user intent; determine a parameterfor the task to be performed based on the spoken command; and performthe task in accordance with the determined parameter.
 8. Thenon-transitory computer-readable storage medium of claim 1, wherein thepredetermined threshold is based on a number of voiceprints in the firstset of stored voiceprints.
 9. The non-transitory computer-readablestorage medium of claim 1, wherein the instructions, when executed bythe one or more processors, further cause the device to: after addingthe current voiceprint to the first set of stored voiceprints in thespeaker profile: determine whether a predetermined condition indicatingan erroneous speaker determination is met; and in accordance with adetermination that the predetermined condition is met, remove thecurrent voiceprint from the first set of stored voiceprints in thespeaker profile.
 10. The non-transitory computer-readable storage mediumof claim 9, wherein determining whether the predetermined condition ismet comprises receiving a user request to cancel activation of thevirtual assistant.
 11. A method for operating a virtual assistant, themethod comprising: at an electronic device having a processor andmemory: receiving current user speech for activating the virtualassistant, wherein the current user speech is associated with currentcontextual data; selecting, based on the current contextual data, afirst set of stored voiceprints from a plurality of sets of storedvoiceprints in a speaker profile of the device, wherein the first set ofstored voiceprints is annotated to indicate first contextual data;determining whether a current voiceprint derived from the current userspeech matches the first set of stored voiceprints within apredetermined threshold; and in accordance with a determination that thecurrent voiceprint matches the first set of stored voiceprints withinthe predetermined threshold: adding the current voiceprint to the firstset of stored voiceprints in the speaker profile; annotating the currentvoiceprint to indicate the first contextual data; and activating thevirtual assistant to process a spoken command received subsequent to theuser speech.
 12. The method of claim 11, wherein the speaker profile isassociated with a user providing the current user speech.
 13. The methodof claim 11, wherein each voiceprint of the plurality of sets of storedvoiceprints of the speaker profile was generated from user speechreceived prior to the current user speech.
 14. The method of claim 11,further comprising: in accordance with a determination that the currentvoiceprint does not match the first set of stored voiceprints within thepredetermined threshold, adding the current voiceprint to an alternatespeaker profile.
 15. The method of claim 11, further comprising: inaccordance with a determination that the current voiceprint does notmatch the first set of stored voiceprints within the predeterminedthreshold: determining whether the current voiceprint derived from thecurrent user speech matches, within a second predetermined threshold, asecond set of stored voiceprints in a second speaker profile of thedevice; and in accordance with a determination that the currentvoiceprint matches the second set of stored voiceprints within thesecond predetermined threshold, adding the current voiceprint to thesecond set of stored voiceprints in the second speaker profile.
 16. Themethod of claim 15, wherein the second speaker profile is associatedwith a user different from the user associated with the speaker profile.17. The method of claim 11, further comprising: in accordance with adetermination that the current voiceprint matches the first set ofstored voiceprints within the predetermined threshold: performingspeech-to-text conversion on the spoken command; determining a userintent based on the spoken command; determining a task to be performedbased on the user intent; determining a parameter for the task to beperformed based on the spoken command; and performing the task inaccordance with the determined parameter.
 18. The method of claim 11,wherein the predetermined threshold is based on a number of voiceprintsin the first set of stored voiceprints.
 19. The method of claim 11,further comprising: after adding the current voiceprint to the first setof stored voiceprints in the speaker profile: determining whether apredetermined condition indicating an erroneous speaker determination ismet; and in accordance with a determination that the predeterminedcondition is met, removing the current voiceprint from the first set ofstored voiceprints in the speaker profile.
 20. The method of claim 19,wherein determining whether the predetermined condition is met comprisesreceiving a user request to cancel activation of the virtual assistant.21. An electronic device, comprising: one or more processors; a memory;and one or more programs, wherein the one or more programs are stored inthe memory and configured to be executed by the one or more processors,the one or more programs including instructions for: receiving currentuser speech for activating the virtual assistant, wherein the currentuser speech is associated with current contextual data; selecting, basedon the current contextual data, a first set of stored voiceprints from aplurality of sets of stored voiceprints in a speaker profile of thedevice, wherein the first set of stored voiceprints is annotated toindicate first contextual data; determining whether a current voiceprintderived from the current user speech matches the first set of storedvoiceprints within a predetermined threshold; and in accordance with adetermination that the current voiceprint matches the first set ofstored voiceprints within the predetermined threshold: adding thecurrent voiceprint to the first set of stored voiceprints in the speakerprofile; annotating the current voiceprint to indicate the firstcontextual data; and activating the virtual assistant to process aspoken command received subsequent to the user speech.
 22. Theelectronic device of claim 21, wherein the speaker profile is associatedwith a user providing the current user speech.
 23. The electronic deviceof claim 21, wherein each of the stored voice prints of the speakerprofile was generated from user speech received prior to the currentuser speech.
 24. The electronic device of claim 21, wherein the one ormore programs further include instructions for: in accordance with adetermination that the current voiceprint does not match the first setof stored voiceprints within the predetermined threshold, adding thecurrent voiceprint to an alternate speaker profile.
 25. The electronicdevice of claim 21, wherein the one or more programs further includeinstructions for: in accordance with a determination that the currentvoiceprint does not match the first set of stored voiceprints within thepredetermined threshold: determining whether the current voiceprintderived from the current user speech matches, within a secondpredetermined threshold, a second set of stored voiceprints in a secondspeaker profile of the device; and in accordance with a determinationthat the current voiceprint matches the second set of stored voiceprintswithin the second predetermined threshold, adding the current voiceprintto the second set of stored voiceprints in the second speaker profile.26. The electronic device of claim 25, wherein the second speakerprofile is associated with a user different from the user associatedwith the speaker profile.
 27. The electronic device of claim 21, whereinthe one or more programs further include instructions for: in accordancewith a determination that the current voiceprint matches the first setof stored voiceprints within the predetermined threshold: performingspeech-to-text conversion on the spoken command; determining a userintent based on the spoken command; determining a task to be performedbased on the user intent; determining a parameter for the task to beperformed based on the spoken command; and performing the task inaccordance with the determined parameter.
 28. The electronic device ofclaim 21, wherein the predetermined threshold is based on a number ofvoiceprints in the first set of stored voiceprints.
 29. The electronicdevice of claim 21, wherein the one or more programs further includeinstructions for: after adding the current voiceprint to the first setof stored voiceprints in the speaker profile: determining whether apredetermined condition indicating an erroneous speaker determination ismet; and in accordance with a determination that the predeterminedcondition is met, removing the current voiceprint from the first set ofstored voiceprints in the speaker profile.
 30. The electronic device ofclaim 21, wherein determining whether the predetermined condition is metcomprises receiving a user request to cancel activation of the virtualassistant.